home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turnbull China Bikeride
/
Turnbull China Bikeride - Disc 2.iso
/
STUTTGART
/
MATHS
/
PARI
/
PARI2
/
pari
/
other
/
Changes
< prev
next >
Wrap
Text File
|
1991-12-09
|
19KB
|
343 lines
(Modifications de 1.31 a 1.35 dans le fichier ~/PARISOURCES/Changes1.31-1.35)
-----------------------------------------------------------------------------
Modifications a la version 1.35.
Code: B: bug, M: modification, N: nouveau programme, D: erreur de doc.
1 a 3: de peu important a tres important
1) [N] Ecrit et installe suppl() (supplement dans GP) et image().
2) [N] Ecrit et installe la factorisation dans les corps finis factmod9()
(factfq() dans GP).
3) [B1] alglin1.c: modifier les ker() pour que quand le noyau est nul le
resultat soit vide.
4) [B1] es.c: dans tous les programmes d'impression, accepter les matrices
a 0 colonnes.
5) [N] alglin1.c: ecrit un nouvel image(), et renomme l'ancien
image2().
6) [B1] es.c: comme 4, pour les vecteurs.
7) [B3] gen1.c: gmul() changer (dans ty>=10) le if() en
if(((vx>vy)&&((tx<17)||(ty<17)))||((vx==vy)&&(tx<10))||((ty>=17)&&(tx<17)))
gadd() idem changer le if() en
if(((vx>vy)&&((tx<17)||(ty<17)))||((vx==vy)&&(tx<10)))
gdiv() idem changer le if() en
if(((vx<vy)&&((tx<17)||(ty<17)))||((vx==vy)&&(ty<10))||((tx>=17)&&(ty<17)))
8) [M1] mis a jour testin et testout
----------------------- Version 1.35.01 --------------------------
9) [B2] polarit2.c, ggcd() reecrit completement le type 9,9, en analogie avec
le type 3, ainsi que type 9,10 en analogie avec 3,1.
10) [N] alglin1.c: ecrit et installe inverseimage().
11) [B2] polarit1.c: rootmod() et factmod(), modifie les appels a ggcd pour les
rendre compatible avec la correction 9).
12) [M1] mp.s etc...: modifie le code pour ne plus du tout utiliser a5, par
compatibilite avec le Mac.
13) [N] bibli1.c: ecrit et installe cyclo().
14) [N] bibli1.c: ecrit et installe vecsort().
15) [N] anal.c, gp.c, init.c: mis globalement infile et echo (transforme en
pariecho), ainsi qu'un buffer parireadbuffer, alloue dans gp.c. Puis
ecrit et installe read().
16) [N] anal.c: installe label() et goto() (honte a moi!), mais goto() ne
marche pas bien.
------------------------ Version 1.35.02 ----------------------------
17) [B2] gen2.c: dbltor() changer ex=log2(x) en ex=floor(log2(x)).
18) [B1] bibli1.c: lllgram(), apres n=lx-1 mettre:
if(n<=1) return gcopy(x).
19) [M1] arith1.c: bezout1(), (ligne 655) remplacer st=-1 par st= -1.
20) [M1] arith2.c: initprimes(), changer size=(maxnum+1)/2 en
size=(maxnum+257)>>1, et 2*(q-s) en (q-s)<<1.
21) [N] bibli1.c: ecrit et installe polymodrecip() (modreverse dans GP).
22) [N] bibli1.c: ecrit et installe polred2().
23) [N] gen3.c: ecrit et installe gtopolyrev() (polyrev dans GP).
24) [M3], [N] bibli1.c, base.c, etc...: unifie tous les base() en un seul, tous les polred,
supprime polredreal (un sturm est fait systematiquement), et ajoute smallpolred2() et
factoredpolred2().
25) [N] polarit1.c: ecrit et installe rootslong().
26) [D1] usersch3.tex: indiquer que dans binome(x,y), y doit etre un entier
du C, et dans anell(e,n) que e doit etre une equation minimale et n un
entier du C.
27) [B1] messages.c: changer factpadic en factorpadic.
28) [B1] alglin1.c: modifier concat() pour accepter des matrices vides.
29) [M1] elliptic.c: modifie initell en remplacant l'appel de roots()
par rootslong(), et installe l'ancien comme initell2()
provisoirement.
----------------------- Version 1.35.03 --------------------------------
30) [B2] alglin1.c: keri() modifie, le precedent donnait tout simplement des
resultats faux.
31) [M1] usersch3.tex: divres, le reste est du signe du dividende, et non positif
ou nul comme signale.
32) [B1] gen1.c: gmul(), modifie pour traiter correctement les matrices vides,
33) [B1] polarit2.c: ggcd(), modifie pour que le pcgd d'un polynome avec l'entier 0
donne le polynome.
34) [N] base.c etc... Ecrit et installe galois() et tchirnhausen().
35) [N] bibli1.c etc... Ecrit et installe genrand() (random dans GP) et permute()
(permutation in GP).
36) [M1] polarit2.c: modifie ggcd() et glcm() pour permettre des arguments
vecteurs/matrices.
37) [N] base.c etc... Ecrit et installe initalg().
38) [M1] gen2.c: normalize() remplace gcmp0 par isexactzero ainsi que les autres occurences
analogues dans gen1.c.
39) [B1] gen2.c: ggval() apres la premiere ligne isexactzero... ajouter
if((tx<9)&&(ty==10)) return 0;
40) [N] polarit2.c etc... ecrit et installe resultant2() valable pour des types non exacts.
41) [M1] alglin1.c: det() change la ligne de division pour qu'en cas de polynomes la division
soit euclidienne.
42) [M1] base.c: smith() modifie le code apres le if(!c) pour permettre des
matrices singulieres (b=0), et prendre la valeur absolue a la fin.
43) [B3] anal.c: lindep2 est de type 23 et pas 21.
44) [M1] usersch3.tex: galois, legerement modifie la terminologie.
45) [B3] base.c: corrige une bug dans smith() dans le cas ou p1=-p2.
46) [M1] pari.menu et usersch3.tex: oublie arg().
47) [M1] Modifie sumdivk pour qu'il accepte k<0.
48) [N] Ecrit les fonctions mpfactr() (fact dans gp) et izeta().
49) [B1] Corrige incgam() pour que ca marche quand a<=0. Ecrit incgam4().
50) [N] Ecrit et installe lseriesell() (a titre temporaire).
51) [N] Ecrit cxpolylog() et incorpore a polylog.
52) [N] Ecrit glngamma(), ggamma() pour les series, et gpolylog().
53) [B3] es.c: texi() corrige 4 lignes au type 10, identiques a la correction
correspondante dans bruti.
54) [N] Ecrit galoisconj().
55) [M1] Modifie gnorml2() pour accepter tous les types, en particulier matrices.
56) [B4] !!! gen1.c gadd() type 2+type 4 et 5, code incorrect modifie.
57) [N] Ecrit et installe matrixqz().
58) [N] Ecrit et installe centerlift().
59) [M2] Modifie err() et invmod() pour qu'il imprime les inversesmodulo
impossibles.
60) [N] Ecrit(!) et installe matlength().
----------------------- Version 1.35.04 --------------------------------
61) [B2] base.c: tchirnhausen() mettre {} apres le if(v).
62) [M1] reecrit commands() pour tenir compte des noms trop longs.
63) [M1] supprime encore une fois (!) les random() dans polarit1.c
64) [M1] ggval et pvaluation ne font plus deborder la pile pari.
65) [B1] gen3.c: matlength() donnait 1 ligne de trop.
66) [M1] gencom.h,gp.c,init.c,anal.c: modifie pour que la fonction read()
de GP soit reentrante.
67) [M2] anal.c: reecrit et nettement ameliore le programme constante().
68) [B2] alglin2.c: matrixqz() change pp en p dans la premiere division.
69) [M1] base.c: hnf() modifie pour accepter des matrices ayant plus de lignes
que de colonnes. Le resultat n'est maintenant pas toujours une matrice carree.
70) [N] alglin2.c: ecrit et installe matrixqz2() (algorithme de Dominique).
71) [N] alglin1.c: ecrit et installe indexrank().
72) [N] alglin2.c: ecrit et installe matrixqz3().
73) [B1] alglin1.c et alglin2.c: modifie invmulmat(), caract(), rank()
et indexrank() pour accepter des matrices vides.
74) [N] alglin2.c: ecrit et installe kerint().
75) [M1] alglin2.c: matrixqz3() corrige une bug et ajoute une LLL-reduction a la fin.
76) [N] gen2.c, etc...: installe size() et rounderror().
77) [M1] alglin2.c: sqred1(), sqred2() (donc sqred()) modifies, et ajoute la protection
contre stack overflow.
78) [N] bibli1.c, alglin2.c: ecrit sqred3(), et nouvelles versions de lll() et lllgram(),
les anciennes s'appelant lll1() et lllgram1(). Les nouvelles sont beaucoup plus rapides
et necessitent moins de place.
79) [N] elliptic.c: ecrit et installe pointell() (fonction P de Weierstrass et sa derivee).
80) [M1] alglin1 et 2.c: modifie encore d'autres programmes d'algebre lineaire pour accepter
les matrices vides.
81) [M1] trans3.c: modifie polylog() pour qu'il accepte tout argument meme tres grand, et
gpolylog pour avoir les polylog d'indice negatif.
82) [M1],[N] trans3.c: renomme polylogd en polylogdold, et modifie pour que polylogd soit
maintenant le D_m~. De plus, traite les cas particuliers 0 et 1 dans les polylog.
83) [N] alglin2.c: ecrit et installe intersect().
84) [B2] alglin2.c: corrige une faute de frappe dans kerint().
85) [B2] elliptic.c: zell(), inverse le signe de t, change le mode de calcul de t pour
eviter au maximum les erreurs d'arrondis, ajoute une iteration agm systematiquement
et traite le cas particulier t=0 (zell() est donc correct et beaucoup plus precis).
86) [M1] bibli2.c: suminf(), prodinf(), prodinf1(), modifie la condition d'arret pour
qu'il puisse y avoir des coefficients nuls.
87) [M1] elliptic.c: matell(), double les coefficients (la precedente definition
donnait le regulateur divise par 2^r).
88) [D1] Modifie quelques fautes de frappe du manuel.
89) [M1] elliptic.c: oncurve(), modifie pour qu'il accepte un resultat approximatif
dans le cas de courbes a coefficients inexacts.
90) [M1] anal.c et messages.c: interverti length et legendre qui n'etaient pas dans
l'order alphabetique.
91) [N] gen2.c, bibli1.c, etc...: ecrit et installe lexcmp() (lex dans GP) et lexsort().
92) [M1] polarit2.c, arith2.c: permis a smallfact() et boundfact() d'avoir des arguments
rationels, et tries les nombres premiers qui interviennent.
93) [M1] gen2.c: gpui(), modifie pour un traitement correct des vecteurs.
------------------------- Version 1.35.05 ---------------------------------
94) [M1] elliptic.c: apell() modifie pour accepter des nombres premiers >2^16.
95) [B2] alglin2.c: hess() etait incorrect. Modifie et en fait simplifie.
96) [B1] gen2.c: ajoute du code a dbltor() pour s'assurer que le resultat est
normalise.
97) [M2] version68k.c: ajoute presque toutes les routines de versionport.c
pour la correction 96 ci-dessus. Deplace les declarations externes de
overflow et hiremainder de genport.h a gencom.h.
98) [N] Donne a GP l'acces au polynome caracteristique calcule par la comatrice
et interverti avec caract. D'ou char() dans GP correspond a caradj0() dans
alglin2.c, et char1() dans GP correspond a caract() dans alglin2.c.
99) [M1] alglin2.c: Modifications cosmetiques a caract().
100) [M1] base.c: hnf() change j=def en j=def-1, puis a la fin (apres le if(
signe(p1))) mettre else def++.
101) [N] alglin2.c: ecrit un nouveau kerint() utilisant HNF. renomme l'ancien
kerint1().
102) [B3] bibli1.c: lllgram() et lllgram1(), la formule donnant mu_{i,k-1}
etait completement fausse! Corrige, et change la constante de 9/10 a
99/100.
103) [B1] mp.s: negs() changer vers la fin tstl d1 en negl d1 (sinon identique
a stoi!). Ajoute #define negs(s) (stoi(-s)) dans genport.h. Egalement,
remplace le calcul d'un zero par _gzero, et dans abss enlever le link.
104) [M1] gen2.c: ismonome() remplace gcmp0() par isexactzero().
105) [M0] gen3.c: supprime conpol(); gencom.h ajoute une macro pour gdiventz().
106) [B2] gen1.c: gdiv() s/10, modifie pour que le resultat soit un polynome
quand s=0 exactement, gmul() et gen3.c: gmulsg() s*13,14 aussi.
107) [M3,N] anal.c (et erreurs.h, messages.c): modifie le case 200 de
identifier() et skipidentifier() pour accepter les syntaxes m[j,] et m[,k]
ou m est une matrice. Ces objets peuvent etre utilises dans une expression,
et a gauche d'un symbole d'affectation (si m est une variable).
108) [N] Installe dans gp shift() (gshift() dans pari) et shiftmul() (gmul2n()
dans pari).
109) [N] es.c: Nouveau format matbrute(), nouvelle commande de GP \m,
modification de la signification de \p et \b.
110) [M1] gen3.c: gsubst() permis a nouveau une substitution dans un polymod.
et de facon similaire dans geval().
111) [M1] alglin2.c: caradj0() autorise polynome caracteristique de tout
scalaire.
112) [B1] polarit2.c: verifie le type dans quadpoly().
113) [M2] alglin2.c: trace() change completement l'algorithme pour le type 9:
utiliser les formules de Newton.
114) [B1] bibli1.c: verifie le type dans ggrando().
115) [M1] trans*.c: autorise les fonctions transcendantes de type 9.
116) [M1] polarit1.c: split() et split9() remplace gvar(*t) par varn(*t).
polarit2.c: discsr() type 10 remplace gvar(x) par varn(x).
117) [M3] gen*.c: nombreuses modifications pour un traitement un peu plus
correct du type 9 (suite des modifs liees a la modif 124 sur 1.34).
En particulier nouvelle fonction gvar2() et macro gvar9.
118) [M1] accepte le type 9 dans ground() et grndtoi().
119) [B3] polarit1.c: decpol() ajouter (i1<=k) avant (i==pos[i1]).
120) [B1] polarit1.c: gredsp() dans les 2 cas p1=0, faire un cgiv(p1) avant
l1=(long)(x+3).
121) [M2] polarit1.c: gred() tx==13 ou 14 calcule le contenu pour essayer
de mieux simplifier. En consequence dans d'autres programmes (gen*.c
en particulier), de tres nombreuses modifs aux case 13, case 14.
122) [B1] polarit2.c: remplacer quelques polgcd par ggcd.
123) [B1] polarit2.c: ggcd(), type 13,14 remplacer if(ty>=17) par if(ty>=15).
124) [B2] polarit1.c: poldivres() if(tx<10) *pr=gcopy(x) et pas gcopy(y).
125) [M1] gen3.c: gmulsg() et gdivgs() case 10: mettre ly=lgef(y) et
lx=lgef(x).
126) [M1] anal.c: constante() remplace stoi(10) (dans l'exposant) par une
affectation dans un reel.
127) [B1] polarit2.c: ggcd() case 3, case 4: commencer par p1=mppgcd(x[1],y[2])
et non pas x[2].
128) [M1] polarit2.c: ggcd() autorise le pgcd case 9 case 13,14.
129) [M1] polarit2.c: ggcd() traite correctement le cas de variables
differentes; modifie le resultat du pgcd avec une serie, et autorise les
pgcd generaux avec series.
130) [B1] gen2.c: normalizepol() changer le if(signe(x)) en if(lgef(x)>2).
131) [B1] bibli1.c: changevar() traite correctement les case 9 et 13,14.
132) [M1] polarit*.c, gencom.h: plusieurs modifs pour remplacer lgef() par
qqchose de plus correct (cas des polynomes scalaires). En particulier
macros isscalar(), isnonscalar() et leadingterm().
133) [M1] gen2.c: normalizepol() modifie et met le signe dans tous les cas.
gen1.c: enlever un setsigne inutile avant normalizepol.
134) [M2] gp.c: (modification de 109) modification de la signification de \p,
\b et \m, et nouvelle commande \a.
135) [N] arith2.c: ecrit rhorealnod() et redrealnod(), et ajoute des verifs
de type dans rhoreal et redreal. Change le nom qfred1 en redcomp, et
ajoute ces fonctions dans pari.menu.
136) [B1] anal.c: identifier() oublie de mettre une verification type et
longueur dans une affectation m[,c]= (suite de 107).
137) [M1] alglin2.c: gnorm() case 10 a 14, prendre la partie reelle avant
de donner le resultat.
138) [M1] trans1.c: gsqrt() autorise le type 9.
139) [N] gen3.c: installe simplify().
--------------------------- Version 1.35.07 ------------------------------
(la version 1.35.06 n'a existe que de facon ephemere dans 1 seul site)
140) [M3,B1] gen3.c: precision() remplacer le if(tx==2)... par
if (tx==2) return max(lg(x),2-(expo(x)>>5));
141) [B3] trans3.c: gpolylog() mettre au debut av=avma et enleve dans les cases
individuels.
142) [B2] elliptic.c: initell() et initell2() remplacer q=ginv(gadd(w,gsqrt(..
par
if(gsigne(greal(w))>0) q=ginv(gadd(w,gsqrt(gaddgs(gmul(w,w),-1),prec)));
else q=gsub(w,gsqrt(gaddgs(gmul(w,w),-1),prec));
pitemp=mppi(prec);...
143) [B1] elliptic.c: initell(), initell2() et zell() remplacer
if(signe(p2)>0) par if(gsigne(p2)>0).
144) [N] bibli1.c: Ecrit et installe lllgramint() et lllint().
145) [B1] gen3.c: gceil() case 4,5: remplacer signe par gsigne.
146) [B3] gen2.c: gpuigs() dans ismonome(x) avant p1=cgetg(dd,10) mettre
av=avma; dans if(n<0) remplacer av=avma par tetpil=avma.
147) [B2] polarit2.c: content() remplacer tetpil=avma;p1=ggcd(p1,x[i])
par
txi=typ(x[i]);
if((txi==2)||((txi>=6)&&(txi<=9))) {avma=l;return gun;}
else {tetpil=avma;p1=ggcd(p1,x[i]);}
rajouter les memes deux premieres lignes dans le else
et declarer txi.
148) [B1] polarit1.c: gred() dans tx==13 ou 14, remplacer if(gcmp0(x1))...
par
x1=(gcmp0(x1))?(GEN)x[1]:gdiv(x[1],x1);
x2=gdiv(x[2],x2);y=poldivres(x1,x2,&p1);
149) [B1] polarit2.c: content() case 11: mettre a la place
case 11: if((!signe(x))&&((tx==11)||(lx==2))) return gzero;
150) [M2,N] arith2.c: Modifie compose(), compreal(), comprealraw(), sqcomp(),
sqcompreal(), sqcomprealraw() pour calculer correctement avec des formes
non primitives (et installation de comprealraw(), sqcomprealraw() et
powrealraw()).
151) [M1] anal.c: remplacement de match() par une macro et matcherr()
152) [M2] anal.c: Au retour d'une fonction, faire systematique ment UNE copie
du resultat.
153) [M1] elliptic.c: le code commun a initell() et initell2() est factorise.
154) [M2] messages.c remplace par errmessages.c et helpmessages.c
155) [M1] tous les 0x77f+i remplaces par 0x77f +i pour satisfaire un
compilateur paranoiaque.
156) [B2] polarit1.c: gres() remplacer if(tx<10) return gcopy(y);
par if(tx<10) return gcopy(x);
157) [B2] arith2.c: kerint1(), av n'etait pas initialise.
158) [B1] gen2.c: lexcmp() lx etait dans certains cas utilise avant
initialisation
159) [M1] supprime une quinzaine de variables locales inutiles.
160) [B1] gen2.c: ggval() case 3, initialisation de p1=cgeti(lgef(x[1])) et
p2=cgeti(lgef(x[2])) etait necessaire.
161) [M2] polarit2.c: factor() type 10, modifie le code pour accepter des
polynomes a coefficients rationnels et pas seulement entiers ou modulo.
162) [M1] errmessages.c et erreurs.h: Enleve recer2 et modifie le message de
recer1.
163) [M1] bibli1.c: Change setprecision() et setserieslength() pour retourner
ce qu'il faut.
164) [N] polarit2.c: ecrit polfnf() (factornf() dans gp).
165) [M1] Mis a jour le manuel, pari.menu et testin.
166) [B1] gen2.c: gcmp_1() case 9: changer gcmp en !gegal
167) [N] polarit2.c: Installe nfiso() (isisom() dans gp) nfincl() (isincl()
dans gp), et rootsof1().
168) [B1] trans3.c: polylog{p,d,dold}(2m+1,1) donnait 0.
----------------------------- Version 1.36beta3 ---------------------
169) [B1] polarit2.c: newtonpoly() remplacer VERYBIGINT par LARGERINT,
defini dans gencom.h.
170) [B3] bibli1.c: lindep2() remplacer lll(p4,(prec<<1)-2) par lllint(p4).
171) [B2] bibli1.c: lllgramint() dans la double boucle initiale, ajouter
coeff(lam,j,i)=zero, commencer a i=1 au lieu de i=2, et enlever
B[2]=coeff(x,1,1) qui precede.
172) [B1] gen3.c: ginv() corriger pour que le resultat soit une forme reduite
dans le cas 15 et 16.
173) [N] arith2.c: ecrit et installe (enfin!) nucomp(), nudupl() et nupow().
(apres essais, ils pourront remplacer la composition ordinaire).
Au passage, quelques modifications esthetiques.
174) [M1] alglin2.c: dans kerint() remplacer l'appel a lll par un appel a
lllint.
175) [M1] polarit2.c: factmod() tester si p<2^31.
176) [B1] bibli1.c: tous les lllgram* quand n<=1 ne pas retourner gcopy(x)
mais idmat(n).
177) [N] alglin2.c: ecrit et installe kerint2() qui devrait etre meilleur que
kerint.
178) [N] alglin2.c et bibli1.c: remplace kerint() par une nouvelle version,
et ecrit et installe lllkerim() et lllgramkerim(). Le programme kerint()
est habituellement plus rapide que kerint1() et kerint2().
------------------------ Version 1.36 ---------------------------------------